---
sidebar_position: 1
description: DeviceScript is a small footprint bytecode interpreter that brings
  a TypeScript developer experience to low-resource
  microcontroller-based devices. Write reusable application/firmware on top of
  abstract hardware services and communicate to a cloud with JSON through a
  unified API. Full debugging experience in Visual Studio Code. Leverage npm,
  yarn or pnpm to distribute and consume DeviceScript packages.
keywords:
  - DeviceScript
  - TypeScript
  - microcontroller
  - firmware
  - hardware
---
# DeviceScript

**DeviceScript brings a TypeScript developer experience to low-resource microcontroller-based devices.**
DeviceScript is compiled to a custom VM bytecode, which can run in very constrained
environments.

![A screenshot of the Visual Studio Code integration](../static/hero.png)

#### TypeScript

The familiar syntax and tooling, all at your fingertips. Read the [language reference](/language).

#### Portable Virtual Machine

Small footprint DeviceScript bytecode interpreter. See [supported devices](/devices).

#### Hardware as Services

Write reusable application/firmware on top of abstract hardware services. See [clients](/developer/clients).

#### Small

Designed for low power, low flash, low memory embedded projects.

#### Simulation & Tracing

Develop and test your firmware using simulated or real sensors. See [simulation](/developer/simulation/)

#### Debugging

Full debugging experience in Visual Studio Code, for hardware or simulated devices. Read about the [Visual Studio Code Extension](/getting-started/vscode).

#### Package Ecosystem

Leverage npm, yarn or pnpm to distribute and consume DeviceScript packages. Read about [Packages](/developer/packages).
